
#if	!defined( __20080806_DEF_PCE_H__ )
#define	__20080806_DEF_PCE_H__

#include	"PCE_Cfg.h"

#define	PCE_Declare_CEnvironment_Param( space )	using namespace space;	\
	using space::int8_t;	\
	using space::uint8_t;	\
	using space::int16_t;	\
	using space::uint16_t;\
	using space::int32_t;	\
	using space::uint32_t;\
	using space::int64_t;	\
	using space::uint64_t;\
	using space::ssize_t;	\
	using space::usize_t;	\
	using space::char_t;	\
	using space::float32_t;	\
	using space::float64_t;	\
	using space::Null;	\
	using space::IsNull;	\
	using space::NotNull;	\
	using space::SetNull

#define	PCE_Declare_CEnvironment()	PCE_Declare_CEnvironment_Param( PCE )

// C environment & tools definition
#if	defined( PCE_CFG_Compiler_VC8 )

	#if	!defined( PCE_CFG_OS_Windows )
		#error VC8 cannot be used on OS rather than Windows.
	#endif

	// include proper CEnv
	#if	defined( PCE_CFG_MWL_32Bits )

		#include	"CEnv/CEnv_Win32_VC8.h"
		#define	PCE_Lib_CurrentCEnvironment	Win32_VC8
		#include	"Tools/Tools.h"
		namespace PCE = PCE_Lib::CEnv_Def::Win32_VC8;

	#elif	defined( PCE_CFG_MWL_64Bits )

		#include	"CEnv/CEnv_Win64_VC8.h"
		#define	PCE_Lib_CurrentCEnvironment	Win64_VC8
		#include	"Tools/Tools.h"
		namespace PCE = PCE_Lib::CEnv_Def::Win64_VC8;

	#else
		#error Not define machine word length (VC8).
	#endif

#elif	defined( PCE_CFG_Compiler_GCC )

	#if	!defined( PCE_CFG_OS_Linux )
		#error GCC cannot be used on OS rather than Linux.
	#endif

	// include proper CEnv
	#if	defined( PCE_CFG_MWL_32Bits )

		#include	"CEnv/CEnv_Linux32_GCC.h"
		#define	PCE_Lib_CurrentCEnvironment	Linux32_GCC
		#include	"Tools/Tools.h"
		namespace PCE = PCE_Lib::CEnv_Def::Linux32_GCC;

	#elif	defined( PCE_CFG_MWL_64Bits )

		#include	"CEnv/CEnv_Linux64_GCC.h"
		#define	PCE_Lib_CurrentCEnvironment	Linux64_GCC
		#include	"Tools/Tools.h"
		namespace PCE = PCE_Lib::CEnv_Def::Linux64_GCC;

	#else
		#error Not define machine word length (GCC).
	#endif

#else
	#error Not define compiler
#endif

#endif	// __20080806_DEF_PCE_H__
